1. Field of the Invention
The present disclosure relates in general to computer graphics and in particular to procedurally expressing arbitrary graphic objects in markup language documents.
2. Background of the Invention
Web pages are created using markup languages such as HTML (HyperText Markup Language), XHTML (Extensible HyperText Markup Language), and SGML (Standard Generalized Markup Language). Designed to be interpreted by different browsers, markup languages allow for a diversity of content to be expressed in a relatively simple and static code structure. While powerful, markup languages are often not well-suited for supporting dynamic, scalable, and complex graphics. As a result, most website images comprise rasterized graphic objects using such formats as .GIF or .JPEG.
Graphic formats such as vector graphics offer a number of advantages over rasterized graphics. Vector graphic images are generated by interpreting a series of vectors, or path descriptions, and stroking or filling those paths. The resulting images are fully resolution-independent and scalable and therefore, unlike rasterized images, can be scaled up or enlarged while maintaining the same quality. Formats for three-dimensional graphics like OpenGL and Direct3D as well as other formats currently offered and under development are similarly procedural in nature, and thus are not naturally described in markup language. In addition to being scalable, vector graphics and related graphic formats also allow for dynamic rendering. This capability allows for interactivity and also permits equivalent files to be more compact since graphical images and scenes are generated just prior to their display.
These and other benefits make vector graphics, OpenGL, and other formats well-suited for use in web pages. However, existing approaches to providing such arbitrary formats on the web have significant drawbacks. Flash vector graphic files, for instance, are bulky and typically can't be accessed unless the user downloads a plug-in containing a rendering engine equipped with special capabilities. Previous attempts to create a 3D markup language, notably VRML (Virtual Reality Modeling Language) have as yet been unsuccessful. In addition, many graphics concepts such as iteratively drawing paths are more naturally described in procedural language rather than using the markup interface such as that used by VRML or SVG. Although adding procedural commands, scripted for instance in JavaScript, to web pages may enable the dynamic manipulation of images, it still does not allow for the drawing of arbitrary images into a web page or confer the other advantages associated with arbitrary graphic formats. Thus, what is needed is a way to leverage existing graphics and rendering capabilities using a procedural interface to create graphics objects for use in websites.